/**
 * @file ogas.h
 * @brief 此文件包含了人机交互页面的关键代码。
 */

#ifndef _OGAS_H_
#define _OGAS_H_

#include "zf_common_headfile.h"

#define column(x) 8*(x) // 列（竖排）
#define line(x) 16*(x) //行（横排）

#define YES (symbol == 1)
#define NO  (symbol == 0)

// 页面枚举
typedef enum OGAS_PAGE {
    OGAS_MASTER,
    OGAS_START,
    EXEQ,
    OGAS_CAMREA,
    OGAS_GYROSCOPE,
    FLASH_SET,
    OGAS_STATE_GAME,
    OGAS_STATE_DEBUGE, // DEBUGE没拼错吗？
} OGAS_PAGE;

// 按键类型枚举
typedef enum OGAS_KEY {
    EMPTY,
    K1_S, K1_L,
    K2_S, K2_L,
    K3_S, K3_L,
    K4_S, K4_L,
} OGAS_KEY;

// 状态枚举
typedef enum OGAS_state {
    OGAS_MODE,
    GAME_MODE,
    DEBUG_MOTOR_BL,       //调试左侧有刷电机
    DEBUG_MOTOR_BR,       //调试右侧有刷电机
    DEBUG_MOTOR_UB,       //调试无刷电机
    CAMREA_MODE,
} OGAS_state;

extern OGAS_state state_ac;
extern int ogas_ready;
extern OGAS_PAGE page_now;
extern int page_target;
extern OGAS_PAGE page_last;
extern uint8 symbol;

void OGAS(void);
OGAS_KEY ogas_get_key(int wait);
void ogas_change_variable_int(int* variable, char* name);
void ogas_change_variable_float(float* variable, char* name);
void ogas_page_error();
void ogas_welcome();
void ogas_page_master();
void ogas_page_start();
void ogas_page_game();
void ogas_page_debuge();
void ogas_page_exeq();
void ogas_page_camera();
void ogas_page_gyroscope();
void ogas_page_flsah();

#endif /* _OGAS_H_ */
